perm filename PT2.F4[MSS,LCS]1 blob sn#183919 filedate 1975-10-30 generic text, type T, neo UTF8
00010		SUBROUTINE PT2
00100		DATA QLINE/150.0/,HX/2./,ZL/2./,ZM/-1.5/
00200	C  QLINE=BASIC LINE LENGTH, HX=HEIGHT MULTIPLIER, ZL=LN. LNGTH FACTOR.
00300	
00400		COMMON /SF/KL,RT,KP,STFSZ,NAMX
00500		COMMON RS,JA,CLEFQ,AA,RQ(16),KQ,NQ,JQ,JJQ,KBQ,NAQ
00600		COMMON/STF/RSTFAC(-3/4),RSTJ2 /IVV/IV(200)
00700		COMMON /POSI/STFF(-3/4),JJ2,JPQ /LLL/L,LL,I,RXQ
00800		1/PX/KPN(1) /Q/Q(1) /PTR/KWDS(1) /XRN/RN(1)
00900		EQUIVALENCE (RQ(2),R4),(R5,RQ(3)),(R6,RQ(4)),(R7,RQ(5))
01000		1,(R8,RQ(6)),(R9,RQ(7)),(LCNT,IV(80)),(NDPY,IV(81))
01200	CC	CALL IFILE(1,'PX')
01300	103	FORMAT(' TYPE OUTPUT FILE NAME  ',$)
01400	102	FORMAT(A5)
01500		TYPE 103
01600		ACCEPT 102,NAMX
01650		IF(NAMX.EQ.' ')GO TO 102
01700		IF(LOOKF(NAMX).GE.0)GO TO 88
01800		TYPE 88,NAMX
01900		ACCEPT 102,L
02000		IF(L.EQ.'N')GO TO 103
02100	88	FORMAT(' WRITE OVER FILE ',A5,'????  '$)
02200	5	FORMAT(F,I)
02210		IF(RS.NE.'OLD')GO TO 2000
02220		CALL GETFIL('PARTS')
02240		CALL FASTIN(RSTFAC,128)
02250		CALL FASTIN(KPN,JJ2)
02260		CALL FASTIN(Q,JPQ)
02300	CC	READ(1),L,LL,
02400	CC	1(PN(N),N=1,L+1),(Q(N),N=1,LL-1),J,RSTJ2,J,J,RSTFAC,STFF,IV,STFF
02410	2000	TYPE 144
02440	144	FORMAT(' STAFF SIZE, TRANSP.  '$)
02470		ACCEPT 5,RSTJ2,LL
02485		IF(RSTJ2.EQ.0)RSTJ2=.9
02510		L=JJ2-2
02515		TR=LL
02520		IF(LL.NE.0)CALL TRNSP(L,TR)
02600		I=L
02700		KK=1
02800	CC	JJ=0
02900	CC	DO 7 K=1,L
03000	CC	N=PN(K)
03100	CC	IF(Q(N+1).NE.4)GO TO 7
03200	CC	JJ=JJ+1
03300	C  FOUND A BAR LINE
03400	CC	RN(JJ)=Q(N+3)
03500	CC7	CONTINUE
03600	CC	ENDLN=RN(JJ)
03650		ENDLN=ENDL(JJ)
03675	C  FUNCTION ENDL(JJ) (IN FAIL) DOES ALL ABOVE
03700	
03710		NA=1000
03750		N=0
03820		TYPE 90
03840		RA=0
03860	90	FORMAT(' NUMBER OF BARS PER LINE'/)
03870		ZLINE=QLINE
03900	9	KL=0
04000		XLINE=ZLINE
04100		J=0
04150		LL=0
04200		DO 8 K=1,JJ
04300		IF(RN(K).LT.XLINE)GO TO 8
04400		KP=K-KL
04500	C  NUMBER OF BARS, THIS LINE
04600	CC	TYPE 89,KP
04700		KL=K
04800		J=J+1
04810		IF(IV(J).NE.KP)LL=-1
04820		IV(J)=KP
04900		XLINE=RN(K)+ZLINE
05000		IF(ENDLN-XLINE.LT.80.)XLINE=ENDLN
05100	8	CONTINUE
05110		IF(LL)TYPE 108,RA,(IV(K),K=1,J)
05115		IF(RT)GO TO 105
05120	108	FORMAT(F6.2,8(3I3,1X))
05150	CC	TYPE 108
05160	CC108	FORMAT(/)
05200	CC89	FORMAT('+',I3,$)
05205		IF(J.GT.NA)GO TO 107
05210		IF(N.EQ.0)GO TO 105
05220	C  SKIP IF FIRST TIME
05230		IF(N.NE.KP)GO TO 106
05235		IF(J.EQ.NA)GO TO 105
05240	106	RT=.05
05260	C SHRINK OR EXPAND?
05270		RA=RA+RT
05280		ZLINE=QLINE*RS/RA
05285	CC	IF(RA.GT.J)GO TO 107
05290		GO TO 9
05300	107	FORMAT(' CAN''T DO IT!')
05310		TYPE 107
05400	105	TYPE 104,J
05500	104	FORMAT(I4,' LINES - OR TYPE N1, N2 --'$)
05600		ACCEPT 5,RA,N
05700		IF(RA.EQ.0)GO TO 11
05800		IF(ZLINE.EQ.QLINE)RS=J
05820		NA=RA
05825		RT=NA-RA
05827		IF(RT)GO TO 109
05830		RA=RA-.6
05840	C  CHECK THIS ↑↑↑ NUMBER!
05850		IF(N.EQ.0)GO TO 90
05900	109	ZLINE=QLINE*RS/RA
06000		GO TO 9
06100	
06200	11	RA=0
06250		XLINE=ZLINE
06300		CLEF=-99
06400		JSLUR=0
06500		SIG=CLEF
06600	100	KL=1
06700		KP=1
06800		RT=2
06900		J=KK
07000		HGT=HX*2.
07100	
07200		DO 1 K=KK,I
07300		N=KPN(K)
07400		IF(Q(N+1).NE.4)GO TO 1
07500	CC	IF(Q(N).GT.2)GO TO 1
07600		IF(Q(N+3).LT.XLINE)GO TO 1
07700	C  FOUND LAST BAR LINE.
07800		RX=0
07900	3	JJ=KP
08000	C PUTS IN STAFF
08100		RS=3.
08200		IF(RT.NE.0)GO TO 331
08300	C NEXT FOR BOTTOM STAFF.  PUTS IN SPACER.
08400		RS=6.
08500		R8=2.45
08600	331	CALL STAFF(RS,8.,0,HGT,RSTJ2,0,0,R8)
08700		HGT=HGT-HX
08800		IF(XLINE.EQ.ZLINE)GO TO 33
08900		IF(XLINE.LT.ENDLN)GO TO 6
08910		IF(RT.EQ.0)GO TO 6
09000		RX=RT
09100		RT=0
09200		CALL STAFF(6.,8.,0,0,0,0,1.,2.45)
09300	C  PUTS IN SPACER
09400		RT=RX
09500	6	IF(JSLUR.EQ.0)GO TO 333
09600		CALL STAFF(5.,5.,0,Q(JSLUR),Q(JSLUR+1),11.5,Q(JSLUR+3),0)
09700		JSLUR=0
09800	333	IF(CLEF.EQ.-99)GO TO 33
09900	C  ONLY STAFF FOR FIRST LINE AT TOP.
10000		RX=10.*RSTJ2
10100	C  THE SPACER
10200		CALL STAFF(3.,3.,1.,0,CLEF,0,0,0)
10300		IF(SIG.EQ.-99)GO TO 33
10400		RS=4.
10500		R5=SIG
10600		RX=CLEF
10700		IF(R5.LT.50)GO TO 332
10800		RX=IFIX((R5+50.)/100.)
10900		R5=R5-RX*100.
11100	C  CLEF+SIG
11200	332	CALL STAFF(RS,17.,11.0*RSTJ2,0,R5,RX,0,0)
11300		RX=12.*RSTJ2
11400	
11500	33	R4=RA
11600		R5=Q(N+3)
11700		RS=0
11800		R7=RT
11900		R8=RX
12000		R9=200.
12100		LL=0
12200		L=K-J+1
12300		CALL PTMOVE(Q,KPN(J))
12400		RA=R5
12500		KB=KL
12600		DO 30 NA=KK,K
12700		KWDS(KP)=KB
12800		KP=KP+1
12900		JK=KPN(NA)
13000		R=Q(JK+1)
13100		IF(R.NE.5)GO TO 35
13200		IF(Q(JK+6).LT.199.)GO TO 30
13300	C CATCHES END OF SLUR
13400		Q(JK+6)=201.
13500		JSLUR=JK+4
13600	C  TO PUT SLUR ON NEXT LINE.
13700		GO TO 30
13800	35	IF(R.NE.2)GO TO 36
13900		IF(Q(JK).LT.6.)GO TO 30
14000	CC	RR=Q(IFIX(PN(NA-1))+3)
14100		RR=RIGHT(NA,-1)
14200		IF(RR.GE.199.)RR=RX
14300	CC	Q(JK+3)=RR-1.6*RSTJ2+(Q(IFIX(PN(NA+1))+3)-RR)/2.
14400		Q(JK+3)=RR-1.6*RSTJ2+(RIGHT(NA,1)-RR)/2.
14500	C  FUNCTION 'RIGHT' FINDS RIGHT ITEMS FOR CENTERING.
14600	C CENTERS WHOLE REST
14700		GO TO 30
14800	36	IF(R.NE.3)GO TO 34
14900		RR=Q(JK+5)
15000		IF(Q(JK).LT.3)RR=0
15100		CLEF=RR
15200		GO TO 30
15300	34	IF(R.NE.17)GO TO 37
15400		SIG=Q(JK+5)
15500		IF(Q(JK).GT.3)SIG=SIG+Q(JK+6)*100.
15600	C  CLEF # IN P6 WITH KEY SIGS.
15700	C  NEXT CHANGES CODE NUM BACK TO ORIGINAL
15800	37	IF(R.GE.33)Q(JK+1)=R/11.
15900	30	KB=KPN(NA+1)-KPN(NA)+KB
16000	
16100	CC	DO 31 NA=IFIX(PN(KK)),IFIX(PN(K+1)-1.)
16200	CC	RN(KL)=Q(NA)
16300	CC31	KL=KL+1
16400	CC	KK=K+1
16410		CALL PSHFT(KK,K)
16500		RS=RT
16600		LL='J'
16700		R4=0
16800		R5=200
16900		NA=L
17000		L=KP-JJ
17100		CALL PTMOVE(RN,KWDS(JJ))
17200		IF(K.EQ.I)GO TO 2
17300		L=NA
17400		J=K+1
17500	C  SO IT DOESN'T GO THRU ALL DATA
17600		RT=RT-1
17700		XLINE=RA+ZLINE
17800		IF(ENDLN-XLINE.LT.80.)XLINE=ENDLN
17900	10	IF(KL.GT.1700.OR.KP.GT.190.OR.RT)GO TO 2
18000	1	IF(K.EQ.I)GO TO 3
18100	CC2	L=KP
18200	CC	KWDS(KP+1)=KB
18250	2	KWDS(KP)=KB
18300		J=1
18400	CC	CALL OFILE(1,NAMX)
18500	CC	LL=KWDS(L+1)
18510		JJ2=KP+1
18548		JPQ=KB
18567	C  WRITES 1 EXTRA WORD
18600	CC2929	WRITE(1),L,LL,
18700	CC	1(KWDS(N),N=1,L+1),(RN(N),N=1,LL-1),J,J,J,J,RSTFAC,STFF,
18750	CC	1 (Q(N),N=1,78),STFF
18760		CALL PUTFIL(NAMX)
18769		LCNT=0
18773		NDPY=0
18778		CALL FASTOU(RSTFAC,128)
18784		CALL FASTOU(KWDS,JJ2)
18790		CALL FASTOU(RN,JPQ)
18800		TYPE 101,NAMX
18900	101	FORMAT(1XA5)
19000		IF(KK.GE.I)CALL EXIT
19100		NAMX=NAMX+2
19200		CALL FINFIL
19300		GO TO 100
19400		END
19500	
19600	CC	SUBROUTINE STAFF(P0,P1, P3,P4,P5,P6,P7,P8)
19700	CC	COMMON/XRN/RN(2000) /SF/KL,RT,KP,RSTJ2,NAMX
19800	CC	COMMON /PTR/PWDS(250),L,LL,I,IX
19900	CC	PWDS(KP)=KL
20000	CC	KP=KP+1
20100	CC	RN(KL)=P0
20200	CC	RN(KL+1)=P1
20300	CC	RN(KL+2)=RT
20400	CC	RN(KL+3)=P3
20500	CC	RN(KL+4)=P4
20600	CC	RN(KL+5)=P5
20700	CC	IF(P0.LT.4.)GO TO 1
20800	CC	RN(KL+6)=P6
20900	CC	IF(P0.LT.5)GO TO 1
21000	CC	RN(KL+7)=P7
21100	CC	IF(P0.LT.6)GO TO 1
21200	CC	RN(KL+8)=P8
21300	CC1	KL=KL+P0+3.
21400	CC	END
21500	
21600	CC	FUNCTION RIGHT(NA,J)
21700	CC	COMMON /PX/PN(1800) /Q/Q(9000)
21800	CC	K=NA+J
21900	C  J IS EITHER +1 OR -1
22000	CC1	L=PN(K)
22100	CC	IF(Q(L+1).NE.16)GO TO 2
22200	CC	K=K+J
22300	CC	GO TO 1
22400	CC2	RIGHT=Q(L+3)
22500	CC	END